Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Programmation par intention</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Programmation_par_intention"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Programmation_par_intention rootpage-Programmation_par_intention skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Programmation par intention</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p>En <a href="Programmation_informatique" title="Programmation informatique">programmation informatique</a>, la <b>programmation par intention</b> (PPI, en anglais <i>intentional programming</i>, <i>IP</i>) est un <a href="Paradigme_(programmation)" title="Paradigme (programmation)">paradigme de programmation</a> qui permet au <a href="Code_source" title="Code source">code source</a> du logiciel de refléter précisément l'intention du développeur lors de la conception. En respectant le niveau d'<a href="Abstraction_(informatique)" title="Abstraction (informatique)">abstraction</a> de la pensée du programmeur, la revue et la maintenance des <a href="Programme_informatique" title="Programme informatique">programmes informatiques</a> devient plus facile étant donné que le lecteur du code source n'a plus à comprendre l'implantation que le développeur a choisie pour savoir ce que le programme est censé faire.
</p><p>Le concept a été introduit par <a href="Charles_Simonyi" title="Charles Simonyi">Charles Simonyi</a> alors qu'il dirigeait une équipe chez <a href="Microsoft_Research" title="Microsoft Research">Microsoft Research</a>. Son groupe a développé un <a href="Environnement_de_d%C3%A9veloppement_int%C3%A9gr%C3%A9" class="mw-redirect" title="Environnement de développement intégré">environnement de développement intégré</a> nommé <b>PPI</b> qui démontre ce concept. Pour des raisons encore obscures<sup id="cite_ref-tr1_1-0" class="reference"><a href="#cite_note-tr1-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>, Microsoft a interrompu le développement sur <b>PPI</b> au début des années 2000.
</p><p>Une présentation de la programmation par intention est disponible dans le chapitre 11 du livre <i>Generative Programming: Methods, Tools, and Applications</i>, de Krzysztof Czarnecki et Ulrich Eisenecker<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.
</p>

<div class="mw-heading mw-heading2"><h2 id="Cycle_de_développement"><span id="Cycle_de_d.C3.A9veloppement"></span>Cycle de développement</h2></div>
<p>Comme envisagé par Simonyi, développer une nouvelle application par l'intermédiaire du paradigme de programmation par intention procède comme suit. Un programmeur crée d'abord une boîte à outils spécifique au domaine du problème donné (par exemple l'<i>assurance-vie</i>). Les experts du domaine, aidés par le programmeur, décrivent alors le comportement prévu de l'application selon la manière <a href="WYSIWYG" class="mw-redirect" title="WYSIWYG">«&nbsp;ce que vous voyez est ce que vous obtenez&nbsp;» (en anglais&nbsp;: WYSIWYG)</a>. En conclusion, un système automatisé utilise la description de programme et la boîte à outils pour générer le programme final. Des changements successifs sont faits seulement au niveau du <a href="WYSIWYG" class="mw-redirect" title="WYSIWYG">«&nbsp;tel affichage, tel résultat&nbsp;» (WYSIWYG)</a>, utilisant un système appelé l'"atelier de domaine" (en anglais&nbsp;: domain workbench)<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Séparation_stockage_et_présentation_du_code_source"><span id="S.C3.A9paration_stockage_et_pr.C3.A9sentation_du_code_source"></span>Séparation stockage et présentation du code source</h2></div>
<p>L'avantage principal de la PPI (et un obstacle probable à son acceptation par les communautés de programmeurs) est que le <a href="Code_source" title="Code source">code source</a> n'est pas stocké dans des <a href="Fichier_texte" title="Fichier texte">fichiers textes</a>, mais dans un <a href="Fichier_binaire" title="Fichier binaire">fichier binaire</a> propriétaire qui ressemble au <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>. Comme avec XML, il n'y a aucun besoin d'un <a href="Analyse_syntaxique" title="Analyse syntaxique">analyseur syntaxique</a> spécifique pour chaque morceau de code qui devrait travailler l'information qui forme le <a href="Programme_informatique" title="Programme informatique">programme</a>, abaissant ainsi la barrière à l'analyse d'écriture ou à la restructuration des outils. La vidéo démontre comment le système manipule les langages qui utilisent un <a href="Pr%C3%A9processeur" title="Préprocesseur">préprocesseur</a> basé sur le texte en examinant les utilisations spécifiques des <a href="Macro-d%C3%A9finition" title="Macro-définition">macros</a> dans un corps de code pour inventer une <a href="Abstraction_(informatique)" title="Abstraction (informatique)">abstraction</a> plus hygiénique.
</p><p>L'intégration serrée de l'éditeur avec le format binaire apporte certaines des fonctionnalités plus jolies de <a href="Forme_normale_(bases_de_donn%C3%A9es_relationnelles)" title="Forme normale (bases de données relationnelles)">normalisation de base de données</a> au <a href="Code_source" title="Code source">code source</a>. La redondance est éliminée en donnant à chaque <a href="D%C3%A9finition" title="Définition">définition</a> à une <a href="https://en.wikipedia.org/wiki/identity_(philosophy)" class="extiw external" title="en:identity (philosophy)">identité</a> unique et en stockant le nom des <a href="Variable_(informatique)" title="Variable (informatique)">variables</a> et des <a href="Op%C3%A9rateur" class="mw-disambig" title="Opérateur">opérateurs</a> dans un emplacement précisément unique. Ceci signifie qu'il est également plus facile de distinguer intrinsèquement entre les <a href="https://en.wikipedia.org/wiki/Declaration_(computer_science)" class="extiw external" title="en:Declaration (computer science)">déclarations</a> et les <a href="R%C3%A9f%C3%A9rence_(informatique)" class="mw-redirect" title="Référence (informatique)">références</a>, alors l'environnement montre des déclarations de type en caractères gras. <a href="https://en.wikipedia.org/wiki/Whitespace" class="extiw external" title="en:Whitespace">L'espace</a> n'est pas également stocké en tant qu'élément du <a href="Code_source" title="Code source">code source</a> et chaque programmeur travaillant sur un projet peut choisir un affichage d'<a href="Style_d'indentation" title="Style d'indentation">indentation</a> du source comme ils préfèrent. Des visualisations plus radicales incluent l'affichage des listes de déclarations en tant que boîtes à sous-programmes imbriqués, en éditant les <a href="https://en.wikipedia.org/wiki/Conditional_(programming)" class="extiw external" title="en:Conditional (programming)">expressions conditionnelles</a> comme des <a href="Fonction_logique" title="Fonction logique">portes logiques</a> ou le re-rendu des noms en Chinois.
</p><p>Le projet semble normaliser un genre de <a href="XML_Schema" title="XML Schema">schéma XML</a> pour des langages populaires comme <a href="C%2B%2B" title="C++">C++</a> et <a href="Java_(langage)" title="Java (langage)">Java</a>, tout en laissant aux utilisateurs le mélange de l'environnement et la mise en relation de cela avec les idées d'<a href="Eiffel_(langage)" title="Eiffel (langage)">Eiffel</a> et d'autres langages. Souvent mentionné dans le même contexte que la <a href="https://en.wikipedia.org/wiki/Language-oriented_programming" class="extiw external" title="en:Language-oriented programming">programmation orientée langage</a> par l'intermédiaire des <a href="Langage_d%C3%A9di%C3%A9" title="Langage dédié">langages dédiés</a> et la <a href="Programmation_orient%C3%A9e_aspect" title="Programmation orientée aspect">programmation orientée aspect</a>, la PPI prétend fournir quelques percées dans la <a href="https://en.wikipedia.org/wiki/Generative_programming" class="extiw external" title="en:Generative programming">programmation générative</a>. Ces techniques permettent à des développeurs d'étendre l'environnement de langage pour capturer les constructions spécifiques au domaine sans investir dans l'écriture d'un <a href="Compilateur" title="Compilateur">compilateur</a> complet et d'un éditeur pour n'importe quel nouveau langage.
</p>
<div class="mw-heading mw-heading2"><h2 id="Exemple">Exemple</h2></div>
<p>Un programme en <a href="Langage_de_programmation_Java" class="mw-redirect" title="Langage de programmation Java">Java</a> qui écrit les nombres de 1 à 10, en utilisant une syntaxe à parenthèses de programmation, peut être comme celui-ci&nbsp;:
</p>
<pre>for (int i = 1; i &lt;= 10; i++)
{
System.out.println("the number is " + i);
}
</pre>
<p>Le code ci-dessus contient une commande commune à la plupart des langages de programmation, soit la boucle, dans ce cas représenté par <code>for</code>. Le code, lorsque compilé, lié et exécuté, va boucler 10 fois, augmentant ainsi la valeur de la variable <i>i</i> à chaque <a href="It%C3%A9ration" title="Itération">itération</a> juste après l'avoir imprimé.
</p><p>Cependant, ce code ne saisit pas les <i>intentions</i> du programmeur, à savoir «&nbsp;imprimer les numéros de 1 à 10&nbsp;». Dans cet exemple simple, un programmeur pourrait fort probablement bien deviner quel est le but du programme sans trop d'effort, mais ce n'est pas toujours aussi simple. Les boucles s'étendant sur de nombreuses lignes, voir des pages, peuvent devenir très complexe à comprendre, notamment si le programmeur n'utilise pas de noms de variables significatifs. Traditionnellement, la seule façon d'indiquer le but du code est d'ajouter des commentaires au code source, mais souvent ils ne sont pas ajoutés, ou ne sont pas clairs, ou il y a un écart de synchronisation avec le code source qu'il est initialement censé expliquer.
</p><p>Dans les systèmes de programmation intentionnelle la boucle vue ci-haut peut être représentée, à certains niveaux, comme quelque chose d'aussi évident que «&nbsp;<code>imprimer les nombres 1 à 10</code>&nbsp;». Le système utiliserait alors les intentions pour <a href="G%C3%A9n%C3%A9ration_de_code_source" title="Génération de code source">générer le code source</a>, produisant probablement quelque chose de très similaire au code vue précédemment. La différence principale dans les systèmes de programmation intentionnelle est qu'ils maintiennent le niveau sémantique, absent du code source lui-même, ce qui peut faciliter considérablement la lisibilité des programmes longs.
</p><p>Bien que la plupart des langages contiennent des mécanismes pour la capture de certains types d'abstraction, la PPI, comme la <a href="Lisp" title="Lisp">famille de langues LISP</a>, permet l'ajout de mécanismes entièrement nouveaux. Ainsi, si un développeur a commencé avec un langage comme le <a href="C_(langage)" title="C (langage)">langage C</a>, il serait en mesure d'étendre le langage avec des fonctionnalités comme celles en C++ sans attendre que les développeurs de compilateur l'ajoute. Par analogie, des mécanismes beaucoup plus puissants d'expression pourraient être utilisés par les programmeurs que de simples <a href="Classe_(informatique)" title="Classe (informatique)">classes</a> et <a href="Proc%C3%A9dure_(informatique)" class="mw-redirect" title="Procédure (informatique)">procédures</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Identité"><span id="Identit.C3.A9"></span>Identité</h3></div>
<p>La PPI se concentre sur le concept <a href="https://en.wikipedia.org/wiki/identity_(philosophy)" class="extiw external" title="en:identity (philosophy)">d'identité</a>. Comme la plupart des langages de programmation représentent le code source au format texte, les objets sont définis par nom et leur caractère unique qui doit être déduit par le compilateur. Par exemple, le même nom symbolique pourrait être utilisé pour différents noms de variables, de procédures ou encore de types. Dans le code qui s'étend sur plusieurs pages – ou sur de multiples fichiers pour les noms globalement visibles – il peut devenir très difficile de dire quel symbole se réfère à l'objet actuel. Si un nom est modifié, le code où il est utilisé doit être soigneusement examiné.
</p><p>En revanche, dans un système de PPI, toutes les définitions attribuent non seulement des noms symboliques mais également des identifiants privés et uniques pour les objets. Cela signifie que, dans le développement de la PPI, chaque fois que vous vous référez à une variable ou une procédure, qui n'est pas juste un nom - il y a un lien vers l'entité originale.
</p><p>Le principal avantage de cette situation est que si vous renommez une entité, toutes les références qui y sont faites dans votre programme sont changées automatiquement. Cela signifie aussi que si vous utilisez le même nom pour des définitions uniques dans les différents espaces de noms (tel que «&nbsp;<code>.to_string()</code>&nbsp;»), vous ne pourrez renommer les mauvaises références comme c'est parfois le cas avec la fonctionnalité de recherche/remplacement dans les éditeurs courants. Cette fonctionnalité le rend également facile d'avoir des versions multi-langages de votre programme. Vous pouvez avoir un ensemble de noms anglais pour tous vos définitions ainsi qu'une série de noms japonais qui peuvent être inversés en à volonté.
</p><p>Avoir une identité unique pour chaque objet défini dans le programme, c'est également faciliter les tâches de réusinage automatisées, ainsi que la simplification de l'enregistrement du code dans <a href="https://en.wikipedia.org/wiki/Revision_control" class="extiw external" title="en:Revision control">les systèmes de contrôle de version</a>. Par exemple, dans de nombreux systèmes actuels de collaboration de codage (par exemple <a href="https://en.wikipedia.org/wiki/Concurrent_Versions_System" class="extiw external" title="en:Concurrent Versions System">CVS</a>), lorsque deux programmeurs valident une modification qui est en conflit (par exemple: si un programmeur renomme une fonction et un autre modifie des lignes de cette fonction), le système de versions pensera qu'un programmeur crée une nouvelle fonction pendant qu'un autre modifie une ancienne fonction. Dans un système de version de PPI, il saura qu'un programmeur a simplement changé un nom tandis qu'un autre a changé le code.
</p>
<div class="mw-heading mw-heading3"><h3 id="Niveau_des_détails"><span id="Niveau_des_d.C3.A9tails"></span>Niveau des détails</h3></div>
<p>Les systèmes de PPI offrent également plusieurs niveaux de détails, ce qui permet au programmeur de «zoomer» ou «dézoomer». Dans l'exemple ci-dessous, le programmeur peut effectuer un zoom arrière pour obtenir un niveau lequel dirait quelque chose comme&nbsp;:
</p>
<pre>&lt;&lt;print the numbers 1 to 10&gt;&gt;
</pre>
<p>Ainsi les systèmes de PPI sont de <a href="https://en.wikipedia.org/wiki/self-documenting" class="extiw external" title="en:self-documenting">l'auto-documentation</a> dans une large mesure, ce qui permet au programmeur de garder un bon niveau élevé de vue de l'ensemble de son programme.
</p>
<div class="mw-heading mw-heading2"><h2 id="Travaux_similaires">Travaux similaires</h2></div>
<p>Il y a des projets qui exploitent des idées similaires afin de créer du code avec niveau plus élevé d'abstraction. Parmi ceux-ci on trouve&nbsp;:
</p>
<ul><li><a href="https://en.wikipedia.org/wiki/Concept_programming" class="extiw external" title="en:Concept programming">Programmation conceptuelle (en anglais)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Language-oriented_programming" class="extiw external" title="en:Language-oriented programming">Programmation orientée langage (en anglais)</a>
<ul><li><a href="Langage_d%C3%A9di%C3%A9" title="Langage dédié">Langage dédié</a></li></ul></li>
<li><a href="https://en.wikipedia.org/wiki/Semantic-oriented_programming" class="extiw external" title="en:Semantic-oriented programming">Programmation orienté sémantique (en anglais)</a></li>
<li><a href="Programmation_lettr%C3%A9e" title="Programmation lettrée">Programmation lettrée</a></li>
<li><a href="Model_driven_architecture" title="Model driven architecture">Architecture dirigée par les modèles</a></li>
<li><a href="https://en.wikipedia.org/wiki/Software_factory" class="extiw external" title="en:Software factory">Usine logiciels (en anglais)</a></li>
<li><a href="M%C3%A9taprogrammation" title="Métaprogrammation">Métaprogrammation</a></li>
<li><a href="Lisp" title="Lisp">Lisp (langage de programmation)</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<ul><li><a href="Paradigme_(programmation)" title="Paradigme (programmation)">Paradigme (programmation)</a></li>
<li><a href="G%C3%A9n%C3%A9ration_de_code_source" title="Génération de code source">Génération de code source</a></li>
<li><a href="Base_de_donn%C3%A9es_orient%C3%A9e_objet" title="Base de données orientée objet">Base de données orientée objet</a></li>
<li><a href="https://en.wikipedia.org/wiki/Artefaktur" class="extiw external" title="en:Artefaktur">Artefaktur (en anglais)</a></li>
<li><a href="Arbre_syntaxique_abstrait" class="mw-redirect" title="Arbre syntaxique abstrait">Arbre syntaxique abstrait</a></li>
<li><a href="https://en.wikipedia.org/wiki/Semantic_resolution_tree" class="extiw external" title="en:Semantic resolution tree">Arbre de résolution sémantique (en anglais)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Structure_editor" class="extiw external" title="en:Structure editor">Editeur de structure (en anglais)</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Références"><span id="R.C3.A9f.C3.A9rences"></span>Références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-tr1-1"><span class="mw-cite-backlink"><a href="#cite_ref-tr1_1-0">↑</a> </span><span class="reference-text">"Simonyi a eu envie d'utiliser son idée hors du laboratoire et de la mettre devant au service des clients. Il explique, qu'il était peu réaliste, alors que Microsoft faisait d'énormes avancées avec <a href="Microsoft_.NET" title="Microsoft .NET">.Net</a> à court terme, d'envoyer quelqu'un d'autre, de la même organisation, dire aux clients que ce n'était pas la bonne manière de faire les choses (...)'"<span class="ouvrage"><span class="noarchive">«&nbsp;<a rel="nofollow" class="external text" href="http://www.technologyreview.com/Infotech/18021/page4/"><cite style="font-style:normal; color:var(--color-link-red, #d73333);">http://www.technologyreview.com/Infotech/18021/page4/</cite></a>&nbsp;»<sup class="">(<a rel="nofollow" class="external text" href="https://web.archive.org/web/*/http://www.technologyreview.com/Infotech/18021/page4/">Archive.org</a> • <a rel="nofollow" class="external text" href="https://archive.wikiwix.com/cache/?url=http://www.technologyreview.com/Infotech/18021/page4/">Wikiwix</a> • <a rel="nofollow" class="external text" href="https://archive.is/http://www.technologyreview.com/Infotech/18021/page4/">Archive.is</a> • <a rel="nofollow" class="external text" href="https://webcache.googleusercontent.com/search?hl=fr&amp;q=cache:http://www.technologyreview.com/Infotech/18021/page4/">Google</a> • Que faire&nbsp;?)</sup></span></span> (citation de "Partie II&nbsp;: Quelque chose que vous pouvez faire, je peux le faire Méta: touriste de l'espace et programmeur milliardaire Charles Simonyi a conçu Microsoft Office. Maintenant il veut reprogrammer le logiciel."], Mardi 9 janvier 2007, Scott Rosenberg, <i><a href="Technology_Review" class="mw-redirect" title="Technology Review">Revue de Technologie de l'institut de technologie du Massachusetts (MIT)</a>.)</i></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text">Addison-Wesley, Reading, MA, USA, Juin 2000.</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text">Scott Rosenberg: "<a rel="nofollow" class="external text" href="http://www.technologyreview.com/Infotech/18047/">Anything You Can Do, I Can Do Meta</a>." <i><a href="Technology_Review" class="mw-redirect" title="Technology Review">Revue de Technologie de l'institut de technologie du Massachusetts (MIT)</a></i>, 8 janvier 2007</span>
</li>
</ol></div>
</div>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Anglophones">Anglophones</h3></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.intentsoft.com/">Intentional Software</a> - La société de Charles Simonyi.</li>
<li><span class="ouvrage"><span class="noarchive">«&nbsp;<a rel="nofollow" class="external text" href="ftp://ftp.research.microsoft.com/pub/tr/tr-95-52.doc"><cite style="font-style:normal; color:var(--color-link-red, #d73333);"><i>The Death Of Computer Languages, The Birth of Intentional Programming</i>, a technical report by Charles Simonyi (1995)</cite></a>&nbsp;»<sup class="">(<a rel="nofollow" class="external text" href="https://web.archive.org/web/*/ftp://ftp.research.microsoft.com/pub/tr/tr-95-52.doc">Archive.org</a> • <a rel="nofollow" class="external text" href="https://archive.wikiwix.com/cache/?url=ftp://ftp.research.microsoft.com/pub/tr/tr-95-52.doc">Wikiwix</a> • <a rel="nofollow" class="external text" href="https://archive.is/ftp://ftp.research.microsoft.com/pub/tr/tr-95-52.doc">Archive.is</a> • <a rel="nofollow" class="external text" href="https://webcache.googleusercontent.com/search?hl=fr&amp;q=cache:ftp://ftp.research.microsoft.com/pub/tr/tr-95-52.doc">Google</a> • Que faire&nbsp;?)</sup></span></span> (<a href="File_Transfer_Protocol" title="File Transfer Protocol">FTP</a> links)</li>
<li><a rel="nofollow" class="external text" href="http://citeseer.ist.psu.edu/simonyi96intentional.html"><i>Intentional Programming - Innovation in the Legacy Age</i>, a talk by Charles Simonyi (1996)</a></li>
<li><a rel="nofollow" class="external text" href="http://www.edge.org/digerati/simonyi/simonyi_p2.html">Edge.org interview with Charles Simonyi (interviewer: John Brockman)</a></li>
<li><a rel="nofollow" class="external text" href="http://www.technologyreview.com/Infotech/18047/">"Anything You Can Do, I Can Do Meta"</a> Tuesday, January 09, 2007, Scott Rosenberg, <i><a href="Technology_Review" class="mw-redirect" title="Technology Review">Technology Review</a></i></li>
<li><a rel="nofollow" class="external text" href="https://www.nytimes.com/2007/01/28/business/yourmoney/28slip.html?ex=1327640400&amp;en=d2d098d765b27104&amp;ei=5088&amp;partner=rssnyt&amp;emc=rs">Awaiting the Day When Everyone Writes Software</a>, <i>The New York Times</i>, 28 January 2007</li>
<li><a rel="nofollow" class="external text" href="http://blog.intentsoft.com/intentional_software/2005/04/dummy_post_1.html"><i>Is programming a form of encryption?</i>, by Charles Simonyi (2005)</a></li>
<li><a rel="nofollow" class="external text" href="http://blog.intentsoft.com/intentional_software/2005/03/notations_and_p.html"><i>The information contents of programs</i>, by Charles Simonyi (2005)</a></li>
<li><a rel="nofollow" class="external text" href="http://blog.intentsoft.com/intentional_software/2005/05/feature_x_is_co.html"><i>Feature X Considered Harmful</i>, by Charles Simonyi (2005)</a></li>
<li><a rel="nofollow" class="external text" href="http://blog.intentsoft.com/intentional_software/2005/05/notations_and_p.html"><i>Notations and Programming Languages</i>, by Charles Simonyi (2005)</a></li>
<li><a rel="nofollow" class="external text" href="http://blog.intentsoft.com/intentional_software/2005/03/random_observat.html"><i>Personal Observations from a Developer</i>, by Mark Edel (2005)</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Francophones">Francophones</h3></div>

<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2023-12-21" href="https://fr.wikipedia.org/wiki/?title=Programmation_par_intention&amp;oldid=210752453">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>